﻿Imports Controle
Public Class frmContatoAgendado
#Region "Variáveis"

    Private prvIDCliente As Int32
    Private prvIDContato As Int32

    Private sMensagemValidacao As String = ""
    Private prvTpCadastro As ctrAgenda.eTipoCadastro

    Private objAgendamento As New ctrAgenda
    Private objClientes As New ctrCliente
    Private objContato As New ctrContato
    Private objStatus As New ctrStatus
    Private objOcorrencias As New ctrOcorrencias
    Private objConfiguracoes As New ctrConfiguracoes

#End Region

#Region "Propriedades"
    Public Property Cliente()
        Get
            Return prvIDCliente
        End Get
        Set(ByVal value)
            prvIDCliente = value
        End Set
    End Property
    Public Property Contato()
        Get
            Return prvIDContato
        End Get
        Set(ByVal value)
            prvIDContato = value
        End Set
    End Property
#End Region

#Region "Métodos"
    Private Function ValidarFormulario() As Boolean
        Dim bRetorno As Boolean = True
        Dim sMsg As String
        sMensagemValidacao = ""

        Try

            If (Not VerificaSeDiaUtil(CDate(dtData.Text))) Then
                sMsg = "A data informada não é um dia útil. Deseja agendar o contato?"
                If (MsgBox(sMsg, MsgBoxStyle.YesNo, "Atenção") = MsgBoxResult.No) Then
                    Return False
                    Exit Function
                End If
            End If

            If (prvIDCliente = 0) Then
                sMensagemValidacao = "- Cliente não informado." & vbCrLf
                bRetorno = False
            End If

            If (prvIDContato = 0) Then
                sMensagemValidacao &= "- Contato não informado." & vbCrLf
                bRetorno = False
            End If

            If (txtObservacoes.Text = String.Empty) Then
                sMensagemValidacao &= "- Observações obrigatórias." & vbCrLf
                bRetorno = False
            End If

            Return bRetorno
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, Me.Text)
        End Try
    End Function

    Private Sub CarregaDados()
        Dim drCliente As DataRow
        Dim dsContato As New DataSet
        Dim iIdStatus As Int32
        Dim dtUltContato As Date
        Try
            If (prvIDCliente > 0) Then
                drCliente = objClientes.selecionarCliente(prvIDCliente)
                If (Not drCliente Is Nothing) Then
                    MyBase.Codigo = prvIDCliente

                    txtIDCliente.Text = prvIDCliente
                    txtNomeCliente.Text = drCliente.Item("RazaoSocial").ToString
                    iIdStatus = Persistencia.perConversao.nuloParaZero(drCliente.Item("idStatus"))

                    If (iIdStatus > 0) Then
                        lblStatusCliente.Text = objStatus.retornarCampoStatus("Descricao", iIdStatus).Item("Descricao").ToString
                    End If

                    dtUltContato = Persistencia.perConversao.nuloParaData(objOcorrencias.RetornaUltimoContato(prvIDCliente).Date.ToString)
                    If (dtUltContato <> Date.MinValue) Then
                        txtUltimoContato.Text = dtUltContato
                    End If

                    dsContato = objContato.selecionarContato(prvIDContato, prvIDCliente, (prvIDContato = 0))
                    If (Not dsContato.Tables("DC_Contatos") Is Nothing) Then
                        prvIDContato = dsContato.Tables("DC_Contatos").Rows(0).Item("IDContato")
                        txtIDContato.Text = prvIDContato
                        txtContato.Text = dsContato.Tables("DC_Contatos").Rows(0).Item("NomeContato").ToString
                    End If
                    Me.modoAtual = eModo.eEditar

                End If
            End If

        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, Me.Text)
        End Try
    End Sub

#End Region

    Private Sub frmContatoAgendado_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
        Dim nContatos As Integer

        Try
            nContatos = Persistencia.perConversao.nuloParaZero(objConfiguracoes.RetornaConfiguracoes("limiteContatos").Item("limiteContatos"))
            cmdSugerir.Enabled = (nContatos > 0)
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, Me.Text)
        End Try

    End Sub

    Private Sub frmContatoAgendado_alteraModo(ByVal eModoAtual As frmPadrao.eModo) Handles Me.alteraModo

        If (eModoAtual = eModo.eAguardar Or eModoAtual = eModo.eExcluir) Then
            Me.txtObservacoes.Enabled = False
            Me.cmdProcuraContato.Enabled = False
            Me.cmdProcura.Enabled = False
            dtData.Enabled = False
            dtHora.Enabled = False
            cmdSugerir.Enabled = False
        Else
            Me.txtObservacoes.Enabled = True
            Me.cmdProcuraContato.Enabled = True
            Me.cmdProcura.Enabled = True
            dtData.Enabled = True
            dtHora.Enabled = True
            cmdSugerir.Enabled = True
        End If
    End Sub

    Private Sub frmContatoAgendado_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        prvTpCadastro = ctrAgenda.eTipoCadastro.eInserir
        If (prvIDCliente > 0) Then
            MyBase.Codigo = prvIDCliente
            CarregaDados()
        End If

    End Sub

    Private Sub cmdProcuraContato_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdProcuraContato.Click
        Dim sql As String
        Dim frmDialogo As New frmPesquisa
        Dim sNomeContato As String

        Try

            If (prvIDCliente > 0) Then
                sql = Me.objContato.sqlConsulta(prvIDCliente)

                With frmDialogo
                    .Campos = "iIDContato,sNomeContato"
                    .Descricoes = "Código,Nome"
                    .Larguras = "50,300"

                    .Sql = sql
                    .Titulo = "Pesquisa Contato"
                    .CarregaTela()
                    If .DS.Tables(0).Rows.Count > 0 Then
                        .ShowDialog()
                        If (.DialogResult = Windows.Forms.DialogResult.OK) Then
                            Me.prvIDContato = .Id
                            sNomeContato = objContato.selecionarContato(prvIDContato, prvIDCliente, False). _
                                              Tables("DC_Contatos").Rows(0).Item("NomeContato").ToString
                            txtContato.Text = sNomeContato
                            txtIDContato.Text = prvIDContato
                        End If
                    Else
                        MsgBox("Registro não encontrado", MsgBoxStyle.Exclamation, Me.Text)
                        Me.prvIDCliente = 0
                        MyBase.Limpar(Me)
                        Exit Sub
                    End If

                End With
            Else
                MsgBox("Cliente não selecionado.", MsgBoxStyle.Information, Me.Text)

            End If
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, Me.Text)
        End Try

    End Sub

    Private Sub cmdProcura_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdProcura.Click
        Dim sql As String
        Dim frmDialogo As New frmPesquisa


        Try
            sql = Me.objClientes.SqlConsulta(False)

            prvIDCliente = 0
            prvIDContato = 0

            Limpar(Me)

            With frmDialogo
                .Campos = "iIDCliente,sRazaoSocial"
                .Descricoes = "Código,Cliente"
                .Larguras = "50,300"
                .Sql = sql
                .Titulo = "Pesquisa Cliente"
                .CarregaTela()
                If .DS.Tables(0).Rows.Count > 0 Then
                    .ShowDialog()
                    If (.DialogResult = Windows.Forms.DialogResult.OK) Then
                        Me.Codigo = .Id
                        Me.prvIDCliente = .Id
                        txtNomeCliente.Text = objClientes.selecionarCliente(prvIDCliente).Item("RazaoSocial").ToString
                        Me.CarregaDados()
                    End If
                Else
                    MsgBox("Registro não encontrado", MsgBoxStyle.Exclamation, Me.Text)
                    Me.prvIDCliente = 0
                    MyBase.Limpar(Me)
                    Exit Sub
                End If

            End With

        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, Me.Text)
        End Try

    End Sub

    Private Sub cmdGravar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdGravar.Click
        Dim idUsuario As Int32
        Dim bResultado As Boolean

        Dim dtDataContato As Date

        Try
            dtDataContato = CDate(dtData.Text)
            idUsuario = frmPrincipal.objUsuario.Usuario

            If (Me.ValidarFormulario) Then

                If (objAgendamento.SalvarContatoAgendado(prvTpCadastro, prvIDCliente, prvIDContato, idUsuario, _
                                                        txtObservacoes.Text.ToString, dtData.Text, dtHora.Text)) Then
                    bResultado = True
                Else
                    bResultado = False
                End If

            Else
                If (Me.sMensagemValidacao <> String.Empty) Then
                    MsgBox(Me.sMensagemValidacao, MsgBoxStyle.Exclamation, Me.Text)
                End If

                bResultado = False
            End If

            If (bResultado) Then
                MyBase.modoAtual = eModo.eAguardar
            Else
                Me.cmdCancelar.Text = "Cancelar"
                MyBase.modoAtual = eModo.eEditar
            End If

        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, Me.Text)
        End Try

    End Sub

    Private Sub cmdNovo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdNovo.Click
        dtData.Text = Date.Now.Date
        dtHora.Text = Date.Now
        txtObservacoes.Text = ""
    End Sub

    Private Sub cmdSugerir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSugerir.Click
        dtData.Text = objAgendamento.SugerirData(CDate(dtData.Text))
    End Sub

End Class
